package com.hongsen.cn.Utils;

import android.content.Context;
import android.content.SharedPreferences;
import android.os.Environment;
import android.text.format.Time;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

import com.hongsen.cn.application.DayAndMonthApplication;
import com.hongsen.cn.bean.TimeBean;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.List;

public class Tools {
    /**
     * 气泡提示
     */
    public static void dispToast(String strvalue) {
        Toast toast = Toast.makeText(DayAndMonthApplication.getInstance().getApplicationContext(), strvalue, Toast.LENGTH_SHORT);
        LinearLayout linearLayout = (LinearLayout) toast.getView();
        TextView messageTextView = (TextView) linearLayout.getChildAt(0);
        messageTextView.setTextSize(30);
        toast.show();
    }

    /**
     * SD卡路径
     */
    public static String getSDPath() {
        String path = "";
        boolean sdCardExist = Environment.getExternalStorageState()
                .equals(android.os.Environment.MEDIA_MOUNTED); //判断sd卡是否存在
        if (sdCardExist) {
            File sdDir = Environment.getExternalStorageDirectory();
            path = sdDir.toString();
        } else {
            path = Environment.getDataDirectory().getPath();
        }
        return path;
    }




//    /**
//     * 保存登录用户数据
//     */
//    public static void saveLoginData(SaveLoginBean data) {
//        Gson mGson = new GsonBuilder().create();
//        sPrefUtils.putString(SharePrefsConstants.LOGIN_JSON, mGson.toJson(data));
//    }
//
//    /**
//     * 获取登录用户信息
//     */
//    public static SaveLoginBean getLoginData() {
//        SaveLoginBean mMemberData;
//        Gson mGson = new GsonBuilder().create();
//        mMemberData = mGson.fromJson(sPrefUtils.getString(SharePrefsConstants.LOGIN_JSON, ""), new TypeToken<SaveLoginBean>() {
//        }.getType());
//        if (mMemberData == null) {
//            mMemberData = new SaveLoginBean();
//        }
//        return mMemberData;
//    }

    /**
     * 保存使用手势解锁
     */
    public static void saveIsShouShi(String data) {
        SharedPreferences pref = DayAndMonthApplication.getInstance().getSharedPreferences("shoushi", Context.MODE_PRIVATE);
        pref.edit().putString("shou",data).commit();
    }

    /**
     * 获取是否使用手势解锁
     */
    public static String getIsShouShi() {
        SharedPreferences pref = DayAndMonthApplication.getInstance().getSharedPreferences("shoushi", Context.MODE_PRIVATE);
        return pref.getString("shou","");
    }
    //
    //    /**
    //     * 保存全局变量
    //     */
    //    public static void saveGlobalData(SaveConfigBean data) {
    //        Gson mGson = new GsonBuilder().create();
    //        sPrefUtils.putString(SharePrefsConstants.GLOBA_JSON, mGson.toJson(data));
    //    }
    //
    //    /**
    //     * 获取全局变量
    //     */
    //    public static SaveConfigBean getGlobalData() {
    //        SaveConfigBean mMemberData;
    //        Gson mGson = new GsonBuilder().create();
    //        mMemberData = mGson.fromJson(sPrefUtils.getString(SharePrefsConstants.GLOBA_JSON, ""), new TypeToken<SaveConfigBean>() {
    //        }.getType());
    //        if (mMemberData == null) {
    //            mMemberData = new SaveConfigBean();
    //        }
    //        return mMemberData;
    //    }

    /**
     * 获取当前时间  精确到秒
     *
     * @return 当前时间
     */
    public static String geNowTime() {
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return format.format(new java.util.Date());
    }

    /**
     * 判断文件是否存在
     */
    public static boolean fileIsExists(String filename) {
        File f = new File(filename);
        return f.exists();
    }

    /**
     * 创建SD卡目录
     */
    public static boolean isFolderExists(String strFolder) {
        File file = new File(strFolder);
        return file.exists() || file.mkdirs();
    }

    /**
     * SD卡创建新文件
     *
     * @param filepath 路径
     * @return 文件
     * @throws IOException 异常
     */

    public static File createFile(String filepath) throws IOException {
        File file = new File(getSDPath() + filepath);
        file.createNewFile();
        return file;
    }

    /**
     * 删除文件
     *
     * @param file 文件
     */
    public static void deleteFile(File file) {
        if (file.exists()) {
            if (file.isFile()) {
                file.delete();
            }
            // 如果它是一个目录
            else if (file.isDirectory()) {
                // 声明目录下所有的文件 files[];
                File files[] = file.listFiles();
                for (File file1 : files) { // 遍历目录下所有的文件
                    deleteFile(file1); // 把每个文件 用这个方法进行迭代
                }
            }
            file.delete();
        }
    }

    /**
     * 删除单个文件
     *
     * @param filePath 被删除文件的文件名
     * @return 文件删除成功返回true，否则返回false
     */
    public static boolean deleteFile(String filePath) {
        File file = new File(filePath);
        return file.isFile() && file.exists() && file.delete();
    }

    public static boolean isDailyShiftFlag() {
        File f = new File(getSDPath() + "/Outdoor/dailyshift.flag");
        return f.exists();
    }

    /*
     * 对时间进行排序
     * */
    public static void ListSort(List<TimeBean> list) {
        Collections.sort(list, new Comparator<TimeBean>() {
            @Override
            //定义一个比较器
            public int compare(TimeBean o1, TimeBean o2) {
                SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                try {
                    Date dt1 = format.parse(o1.getTime());
                    Date dt2 = format.parse(o2.getTime());
                    if (dt1.getTime() > dt2.getTime()) {
                        return 1;
                    } else if (dt1.getTime() < dt2.getTime()) {
                        return -1;
                    } else {
                        return 0;
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
                return 0;
            }
        });
    }

    /**
     * 判断当前系统时间是否在指定时间的范围内
     * <p>
     * beginHour 开始小时,例如22
     * beginMin  开始小时的分钟数,例如30
     * endHour   结束小时,例如 8
     * endMin    结束小时的分钟数,例如0
     * true表示在范围内, 否则false
     */
    public static boolean isCurrentInTimeScope(int beginHour, int beginMin, int endHour, int endMin) {
        boolean result = false;
        final long aDayInMillis = 1000 * 60 * 60 * 24;
        final long currentTimeMillis = System.currentTimeMillis();
        Time now = new Time();
        now.set(currentTimeMillis);
        Time startTime = new Time();
        startTime.set(currentTimeMillis);
        startTime.hour = beginHour;
        startTime.minute = beginMin;
        Time endTime = new Time();
        endTime.set(currentTimeMillis);
        endTime.hour = endHour;
        endTime.minute = endMin;
        // 跨天的特殊情况(比如22:00-8:00)
        if (!startTime.before(endTime)) {
            startTime.set(startTime.toMillis(true) - aDayInMillis);
            result = !now.before(startTime) && !now.after(endTime); // startTime <= now <= endTime
            Time startTimeInThisDay = new Time();
            startTimeInThisDay.set(startTime.toMillis(true) + aDayInMillis);
            if (!now.before(startTimeInThisDay)) {
                result = true;
            }
        } else {
            //普通情况(比如 8:00 - 14:00)
            result = !now.before(startTime) && !now.after(endTime); // startTime <= now <= endTime
        }
        return result;
    }
}
